package com.abc.xxx.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.abc.xxx.model.User;
import com.abc.xxx.model.vo.UserInfo;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface UserService extends IService<User> {

    /**
     * 根据用户账号查询用户信息
     *
     * @param name
     * @return
     */
    User findUserByName(String name);

    /**
     * 查询已登录用户的信息
     * @param loginedUserId
     * @return
     */
    UserInfo findUserInfoForLoginedUser(Integer loginedUserId);

    /**
     * 查询正在使用指定角色的用户的昵称
     * @param roleId
     * @return
     */
    List<String> findUserNickUsingTheRole(Integer roleId);

    /**
     * 查询用户列表
     *
     * @param currentUserId
     * @param key
     * @return
     */
    List<User> findUsers(Integer currentUserId, String key);

    /**
     * 检查账号是否已存在
     *
     * @param name
     * @return
     */
    boolean isAccountExists(String name);

    /**
     * 检查用户名是否重复
     *
     * @param userName
     * @return
     */
    boolean isUserNameDuplicate(Integer userId, String userName);

    /**
     * 为用户分配角色
     *
     * @param userId
     * @param roleName
     */
    void assignRoleToUser(Integer userId, String roleName);

    /**
     * 设备管理-设备列表-详情-下发命令，
     * 分页查询命令下发记录时，
     * 当d_command_msg.trigger_type=1时，
     * 显示d_command_msg.trigger_id字段对应的系统用户
     * @param userIds
     * @return
     */
    Map<Integer,String> loadUserNameMap(Set<Integer> userIds);

}
